﻿Imports System.Data
Imports Sistema_InformacionNaviera.BC
Imports Sistema_InformacionNaviera.BE
Imports Sistema_InformacionNavier.UTIL
 
Public Class NaveViaje
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not Page.IsPostBack Then
            CargarLinea()
            CargarCombo("ES", cboEstibador)
            sTab.ActiveTabIndex = 0

            txtRevisado.Enabled = False
            ''chkRevisado.Checked = False
            If Session("TipoEvento") = 0 Then
                spLimpiarControles()
            Else
                If Session("CodigoVJ") = Nothing Then
                    MsgBox("No se pudo cargar la información", vbInformation, Me.Title)
                    Exit Sub
                End If
                spLimpiarControles()
                spListaViaje()
                txtNave.Enabled = False : txtDescripcionNave.Enabled = False : txtCodPto.Enabled = False : txtDesPto.Enabled = False
                txtNvia.Enabled = False : cboDireccion.Enabled = False : txtArribo.Enabled = False : txtZarpe.Enabled = False
                cboLinea.Enabled = False : cboServicio.Enabled = False : cboOperadoPor.Enabled = False
                If chkCierre.Checked Then
                    chkCierre.Enabled = False : chkCierre.ReadOnly = True : txtRevisado.Enabled = False : txtRevisado.ReadOnly = True
                End If
            End If

        End If
        'tipo de carga: 


        'Session("CodigoDL")
        If My.Request.Params("__EVENTTARGET") = "MiFuncionPaquetes" Then
            CargarDatosNavePopUp()
        End If

        If My.Request.Params("__EVENTTARGET") = "MiFuncionPuertos" Then
            If Session("BPCodPuerto") = Nothing Then
                txtCodPto.Text = String.Empty
                txtDesPto.Text = String.Empty
            Else
                txtCodPto.Text = Session("BPCodPuerto")
                txtDesPto.Text = Session("BPDesPuerto")

            End If
        End If

    End Sub 

    Sub spLimpiarControles()
        txtCodPto.Text = "" : txtDesPto.Text = "" : txtArribo.Text = "" : txtIniDes.Text = ""
        txtIniEmb.Text = "" : txtNvia.Text = "" : cboDireccion.SelectedIndex = 0
        txtZarpe.Text = "" : txtFinDes.Text = "" : txtFinEmb.Text = ""
        cboLinea.SelectedIndex = 0 : txtObsImpo.Text = "" : txtObsExpo.Text = "" : cboServicio.SelectedIndex = 0
        cboOperadoPor.SelectedIndex = 0 : cboEstibador.SelectedIndex = 0 : txtMuelle.Text = "" : cboAgMaritimo.SelectedIndex = 0
        cboTCarga.SelectedIndex = 0 : cboAgGral.SelectedIndex = 0 : txtInicioMora.Text = ""
    End Sub

    Public Sub CargarCombo(ByVal sTipo As String, cbo As DropDownList, Optional sParm1 As String = "")
        Dim listGeneralBE As List(Of GeneralBE) = New List(Of GeneralBE)
        Dim objGeneralBC As GeneralBC = New GeneralBC()

        Dim objUnidadSeleccione As GeneralBE = New GeneralBE
        objUnidadSeleccione.Codigo = 0
        objUnidadSeleccione.Descripcion = "[Seleccione]"
        listGeneralBE.Add(objUnidadSeleccione)
        objUnidadSeleccione.Codigo = sTipo
        objUnidadSeleccione.Param1 = sParm1

        listGeneralBE.AddRange(objGeneralBC.ListadoGeneral(objUnidadSeleccione))

        cbo.DataSource = listGeneralBE
        cbo.DataValueField = "Codigo"
        cbo.DataTextField = "Descripcion"
        cbo.DataBind()

    End Sub

    Public Sub CargarLinea()


        Dim listLineaBE As List(Of LineaBE) = New List(Of LineaBE)
        Dim objLineBC As LineaBC = New LineaBC()

        Dim objUnidadSeleccione As LineaBE = New LineaBE
        objUnidadSeleccione.Codigo = ""
        objUnidadSeleccione.Descripcion = ""
        listLineaBE.Add(objUnidadSeleccione)


        listLineaBE.AddRange(objLineBC.ListadoLinea(objUnidadSeleccione))

        objUnidadSeleccione.Descripcion = "[Seleccione]"
        cboLinea.DataSource = listLineaBE
        cboLinea.DataValueField = "Codigo"
        cboLinea.DataTextField = "Descripcion"
        cboLinea.DataBind()

        cboOperadoPor.DataSource = listLineaBE
        cboOperadoPor.DataValueField = "Codigo"
        cboOperadoPor.DataTextField = "Descripcion"
        cboOperadoPor.DataBind()
    End Sub

    Public Sub CargarDatosNavePopUp()

        If Session("BPCodViaje") = Nothing Then
            txtNave.Text = String.Empty
            txtDescripcionNave.Text = String.Empty
        Else
            txtNave.Text = Session("BPCodViaje") 
            txtDescripcionNave.Text = Session("BPDesViaje")
        End If
    End Sub


    Protected Sub btnSalir_Click(sender As Object, e As EventArgs) Handles btnSalir.Click
        Response.Redirect("Consultar_NaveViaje.aspx", True)
    End Sub

    Private Sub cboLinea_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles cboLinea.SelectedIndexChanged
        If cboLinea.SelectedIndex > 1 Then
            CargarServicio("SR")
            CargarCombo("AM", cboAgMaritimo, IIf(cboLinea.SelectedIndex >= 0, cboLinea.SelectedValue, ""))
        End If
    End Sub

    Public Sub CargarServicio(ByVal sTipo As String)
        Dim listGeneralBE As List(Of GeneralBE) = New List(Of GeneralBE)
        Dim objGeneralBC As GeneralBC = New GeneralBC()

        Dim objUnidadSeleccione As GeneralBE = New GeneralBE
        objUnidadSeleccione.Codigo = 0
        objUnidadSeleccione.Descripcion = "[Seleccione]"
        listGeneralBE.Add(objUnidadSeleccione)
        objUnidadSeleccione.Codigo = sTipo
        objUnidadSeleccione.Param1 = IIf(cboLinea.SelectedIndex > 1, cboLinea.SelectedValue, "")

        listGeneralBE.AddRange(objGeneralBC.ListadoGeneral(objUnidadSeleccione))

        cboServicio.DataSource = listGeneralBE
        cboServicio.DataValueField = "Codigo"
        cboServicio.DataTextField = "Descripcion"
        cboServicio.DataBind()

    End Sub

    Protected Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click
        Try
            Dim objViajesBE As ViajesBE
            Dim objViajesBC As ViajesBC
            Dim bExito As Boolean = False
            Dim sMensaje As String = ""
            Dim sActividad As String = ""
            If Not spValidaCampos() Then
                Exit Sub
            End If
            objViajesBE = New ViajesBE
            If Session("TipoEvento") = 1 Then
                objViajesBE.Viaje = Session("CodigoVJ")
            Else
                objViajesBE.Viaje = 0
            End If
            objViajesBE.CodNave = txtNave.Text.Trim
            objViajesBE.Nvia = txtNvia.Text.Trim
            objViajesBE.Puerto = txtCodPto.Text.Trim
            objViajesBE.Dire = cboDireccion.Text.Trim
            objViajesBE.Farr = txtArribo.Text.Trim
            objViajesBE.Fzar = txtZarpe.Text.Trim
            objViajesBE.IniDes = txtIniDes.Text.Trim
            objViajesBE.FinDes = txtFinDes.Text.Trim
            objViajesBE.IniEmb = txtIniEmb.Text.Trim
            objViajesBE.FinEmb = txtFinEmb.Text.Trim
            objViajesBE.Serv = cboServicio.Text.Trim
            objViajesBE.Line = cboLinea.Text.Trim
            objViajesBE.Operador = cboOperadoPor.SelectedValue.Trim
            objViajesBE.Estibador = cboEstibador.SelectedValue.Trim
            objViajesBE.Muelle = txtMuelle.Text.Trim
            objViajesBE.AgMaritimo = cboAgMaritimo.Text.Trim
            objViajesBE.TipoCarga = cboTCarga.Text.Trim
            objViajesBE.AgGral = cboAgGral.Text.Trim
            objViajesBE.IniMora = txtInicioMora.Text.Trim
            objViajesBE.ObsImpo = txtObsImpo.Text.Trim
            objViajesBE.ObsExpo = txtObsExpo.Text.Trim
            objViajesBE.Usuario = Session("idIusuario")
            If Session("TipoEvento") = 1 And chkCierre.Checked And txtRevisado.Text.Trim.Length > 0 Then
                objViajesBE.Cierre = 1 : objViajesBE.FCierre = txtRevisado.Text.Trim
            Else
                objViajesBE.Cierre = 0 : objViajesBE.FCierre = ""
            End If
            objViajesBC = New ViajesBC
            Dim strMensaje As String = ""

            If Session("TipoEvento") = 0 Then  ' Agregar 
                objViajesBC.InsertarViajes(objViajesBE, bExito, sMensaje)
                MsgBox("El registro fue ingresado con éxito.", vbInformation, Me.Title)

            ElseIf Session("TipoEvento") = 1 Then  ' Modifica 
                objViajesBC.EditarViajes(objViajesBE, bExito, sMensaje)
                MsgBox("El registro fue actualizado con éxito.", vbInformation, Me.Title)
            End If
            'Response.Redirect("~/Page/NaveViaje/Consultar_NaveViaje.aspx", True)
            Response.Redirect("Consultar_NaveViaje.aspx", True)
            Exit Sub
        Catch ex As Exception
            'MsgBox(ex.Message, vbCritical, Me.Title)
            Exit Sub
        End Try
    End Sub

    Function spValidaCampos() As Boolean
        Dim bValido As Boolean = True

        If txtNave.Text.Trim = "" Then
            MsgBox("Debe seleccionar una nave.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If txtNvia.Text.Trim = "" Then
            MsgBox("Debe ingresar una vía del viaje", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If txtCodPto.Text.Trim = "" Then
            MsgBox("Debe seleccionar un puerto.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If
         
        If cboDireccion.SelectedValue = "0" Then
            MsgBox("Seleccione la dirección del viaje.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If txtArribo.Text.Trim = "" Then
            MsgBox("Debe ingresar la fecha de arribo.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If
        
        If txtZarpe.Text.Trim = "" Then
            MsgBox("Debe ingresar la fecha de zarpe.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If txtIniDes.Text.Trim = "" Then
            MsgBox("Debe ingresar la fecha de inicio de descarga.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If txtFinDes.Text.Trim = "" Then
            MsgBox("Debe ingresar la fecha fin de descarga.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If txtIniEmb.Text.Trim = "" Then
            MsgBox("Debe ingresar la fecha de inicio de embarque.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If txtFinEmb.Text.Trim = "" Then
            MsgBox("Debe ingresar la fecha fin de embarque.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If cboLinea.SelectedIndex <= 0 Then
            MsgBox("Debe seleccionar la línea.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If cboServicio.SelectedIndex <= 0 Then
            MsgBox("Debe seleccionar el servicio.", vbInformation, Me.Title)
            bValido = False
            Return bValido
            Exit Function
        End If

        If chkCierre.Checked Then
            If Not IsDate(txtRevisado.Text) Then
                MsgBox("No es una fecha válida.", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            ElseIf CDate(txtRevisado.Text) < Date.Now Then
                MsgBox("La fecha de cierre no puede ser menor a la de hoy.", vbInformation, Me.Title)
                bValido = False
                Return bValido
                Exit Function
            End If

        End If
        Return bValido
    End Function

    Sub spListaViaje()
        Dim lstViajeBE As List(Of ViajesBE) = New List(Of ViajesBE)
        Dim objViajeBE As ViajesBE = New ViajesBE
        Dim objViajeBC As ViajesBC = New ViajesBC()
        objViajeBE.Line = "" : objViajeBE.Serv = "" : objViajeBE.Farr = "" : objViajeBE.Fzar = "" : objViajeBE.DesNave = ""
        objViajeBE.Viaje = Session("CodigoVJ")
        lstViajeBE = objViajeBC.ConsultaNaveViaje(objViajeBE)
        If lstViajeBE.Count > 0 Then
            txtCodPto.Text = lstViajeBE(0).CodPto : txtDesPto.Text = lstViajeBE(0).Puerto : txtNave.Text = lstViajeBE(0).CodNave : txtDescripcionNave.Text = lstViajeBE(0).DesNave
            txtArribo.Text = lstViajeBE(0).Farr : txtIniDes.Text = lstViajeBE(0).IniDes
            txtIniEmb.Text = lstViajeBE(0).IniEmb : txtNvia.Text = lstViajeBE(0).Nvia
            cboDireccion.SelectedValue = lstViajeBE(0).Dire.Trim : txtZarpe.Text = lstViajeBE(0).Fzar
            txtFinDes.Text = lstViajeBE(0).FinDes : txtFinEmb.Text = lstViajeBE(0).FinEmb
            cboLinea.SelectedValue = lstViajeBE(0).Line : txtObsImpo.Text = lstViajeBE(0).ObsImpo
            If cboLinea.SelectedIndex > 1 Then
                CargarServicio("SR")
                cboServicio.SelectedValue = lstViajeBE(0).Serv
                CargarCombo("AM", cboAgMaritimo, IIf(cboLinea.SelectedIndex >= 0, cboLinea.SelectedValue, ""))
                cboAgMaritimo.SelectedValue = lstViajeBE(0).AgMaritimo
            End If 
        txtObsExpo.Text = lstViajeBE(0).ObsExpo : cboOperadoPor.SelectedValue = lstViajeBE(0).Operador
        cboEstibador.SelectedValue = lstViajeBE(0).Estibador : txtMuelle.Text = lstViajeBE(0).Muelle
            cboTCarga.SelectedValue = lstViajeBE(0).TipoCarga : cboAgGral.SelectedValue = lstViajeBE(0).AgGral : txtInicioMora.Text = lstViajeBE(0).IniMora
            txtRevisado.Text = lstViajeBE(0).FCierre : chkCierre.Checked = IIf(txtRevisado.Text.Length > 0, True, False)
        End If
    End Sub 
     

    Protected Sub chkCierre_CheckedChanged(sender As Object, e As EventArgs) Handles chkCierre.CheckedChanged
        If Page.IsPostBack Then
            'If chkCierre.Checked = True Then
            '    txtRevisado.Enabled = True

            'Else
            '    txtRevisado.Enabled = False
            '    txtRevisado.Text = String.Empty
            'End If
            If Session("TipoEvento") = 0 Then
                chkCierre.Checked = 0
                txtRevisado.Enabled = False
                txtRevisado.Text = String.Empty
            Else
                If chkCierre.Checked = True Then
                    txtRevisado.Enabled = True
                Else
                    txtRevisado.Enabled = False
                    txtRevisado.Text = String.Empty
                End If
            End If
        End If
    End Sub
End Class